home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright (C) 1994, Silicon Graphics, Inc.
- * All Rights Reserved.
- *
- * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
- * the contents of this file may not be disclosed to third parties, copied or
- * duplicated in any form, in whole or in part, without the prior written
- * permission of Silicon Graphics, Inc.
- *
- * RESTRICTED RIGHTS LEGEND:
- * Use, duplication or disclosure by the Government is subject to restrictions
- * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
- * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
- * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
- * rights reserved under the Copyright Laws of the United States.
- */
- #include "parse.h"
-
- extern "C" { bzero(void *, int); }
-
-
- miParser::miParser()
- {
- bzero(this, sizeof(this));
- }
-
- static int getidx(int stat)
- {
- int idx = stat >> 4;
- if (stat > 0xf0) idx += stat & 0xf;
- return idx;
- }
-
- void
- miParser::changeCallBack(MIDIstatus stat, miCallBack func, void *arg, int size)
- {
- int idx = getidx(stat);
-
- table[idx].fun = func;
- table[idx].arg = arg;
- table[idx].size = size;
- }
-
- void
- miParser::Parse(MIevent ev)
- {
- int idx;
-
- if (ev.t != MISYSEX)
- idx = getidx(ev.mm.msgbuf.status());
- else
- idx = 0xf;
-
- struct funarg f = table[idx];
-
- if (!f.fun) return;
-
- if (f.fun)
- (f.fun)(ev, f.arg, f.size);
- }
-
-
-
-